﻿//#include<iostream>
//using namespace std;
//constexpr int size()
//{
//	return 10;
//}
//constexpr int func(int x){
//	return 10 + x;
//}
//constexpr int factorial(int n){
//	return n <= 1 ? 1 : n * factorial(n - 1);
//}
//constexpr int fxx(int x){
//	int i = x;
//	i++;
//	cout << i << endl;
//	return 10 + x;
//}
//
//int main(){
//	// 编译时，N会被直接替换为10，constexpr函数默认就是inline 
//	constexpr int N1 = size();
//	int arr1[N1];
//	// func传10时，func函数返回值是常量表达式，所以N2是常量表达式 
//	constexpr int N2 = func(10);
//	int arr2[N2];
//	// func传10时，func函数返回值是常量表达式，所以N2是常量表达式 
//	int i = 10;
//
//	// constexpr int N3 = func(i); // 报错func返回的不是常量表达式 
//	int N4 = func(i); // 不报错constexpr函数返回的不⼀是常量表达式 
//	constexpr int fact5 = factorial(5); // 编译时计算 
//	
//	// constexpr修饰的函数可以有⼀些其他语句，但是这些语句运行时可以不执行任何操作就可以 
//	// 如类型别名、空语句、using声明等 
//	// constexpr int N5 = fxx(10); // 报错 
//	return 0;
//}
